from django.shortcuts import render
from django.shortcuts import redirect
from django.http import HttpResponse
from bson import json_util
from django.contrib.auth.decorators import login_required
from django.contrib.auth.decorators import permission_required
from bson.objectid import ObjectId
import datetime

import os
from collections import OrderedDict
import json

import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["test3"]

mycol_id=mydb["produceId"] #用于生成_id的数据库

def cgx_wenjuan_ObjectId():  #为每份问卷生成ObjectId
    mycol_id.insert_one({"test": 1})

    for id in mycol_id.find({}, {'_id': 1}):
        _id = id['_id']

    mycol_id.delete_many({})

    return _id

#各省首页
@login_required
def review_index(request,province):
    return render(request,'review/'+province+'/index.html')

#根据前端url传来的数据，判断当前问卷类别，返回相应草稿箱数据库
#根据前端url传来的数据，判断当前问卷类别，返回相应的问卷与草稿箱数据库以及查询信息
def getMycol(no):
    if no == 'no1':
        return {
            'mycol':mydb["questionnaire1"],  # 存储脑出血患者调查问卷
            'mycol1':mydb["questionnaire11"],  # 草稿箱中的脑出血患者调查问卷存储
        }
    elif no == 'no2':
        return {
            'mycol':mydb["questionnaire2"],  # 存储健康人群调查问卷
            'mycol1':mydb["questionnaire12"], # 草稿箱中的健康人群调查问卷存储
        }
    elif no == 'no4':
        return {
            'mycol':mydb["questionnaire4"],  # 存储健康人群调查问卷(体检中心)
            'mycol1':mydb["questionnaire14"],  # 草稿箱中的健康人群调查问卷(体检中心)存储
        }
    elif no == 'no5':
        return {
            'mycol':mydb["questionnaire5"],  # 存储脑出血患者调查问卷(医院)
            'mycol1':mydb["questionnaire15"],  # 草稿箱中的脑出血患者调查问卷(医院)存储
        }
    elif no == 'no6':
        return {
            'mycol':mydb["questionnaire6"], # 存储随访问卷
            'mycol1':mydb["questionnaire16"],  # 草稿箱中的随访问卷存储
        }
    elif no == 'no7':
        return {
            'mycol':mydb["questionnaire7"],  # 存储入户筛查表
            'mycol1':mydb["questionnaire17"],  # 草稿箱中的入户筛查表存储
        }
    elif no == 'no8':
        return {
            'mycol':mydb["questionnaire8"], 
            'mycol1':mydb["questionnaire18"], 
        }
    elif no == 'no9':
        return {
            'mycol':mydb["questionnaire9"], 
            'mycol1':mydb["questionnaire19"], 
        }
    elif no =='no10':
        return {
            'mycol':mydb["questionnaire10"], 
            'mycol1':mydb["questionnaire110"], 
        }
    else:
        return {
            'mycol': mydb["questionnaire011"],
            'mycol1': mydb["questionnaire111"],
        }
#判断省各省名称
def getProvince(province):
    if province == 'hunan':
        return '湖南省'
    elif province == 'hubei':
        return '湖北省'
    elif province == 'henan':
        return '河南省'
    elif province == 'anhui':
        return '安徽省'
    else:
        return '江西省'


#各省各类问卷
@login_required
def review(request,province,no):
    province1 = getProvince(province)
    my = getMycol(no)
    mycol = my['mycol']
    xx = mycol.find({"所在的省": province1},{'_id': 1, '填表人签名': 1, '填表人联系电话': 1, '填表人填写日期': 1, '审核是否通过': 1, '登录账号': 1})
    user_obj = []
    for x in xx:  # 查询特定字段
        x['表格编号'] = x['_id']
        if '审核是否通过' not in x.keys(): #需要的是没有经过审核的数据
            user_obj.append(x)
    return render(request, 'review/'+no+'/index_review.html', {'user_obj': user_obj, 'place_Review': province1})


#湖南省问卷
@login_required
def review_hunan(request,no):
    my = getMycol(no)
    mycol = my['mycol']
    #筛选出没有"审核是否通过"字段的数据，即
    xx = mycol.find({'审核是否通过':{'$exists':0}},{'_id': 1, '填表人签名': 1, '填表人联系电话': 1, '填表人填写日期': 1, '审核是否通过': 1, '登录账号': 1})
    user_obj = []
    for x in xx:  # 查询特定字段
        print(x)
        x['表格编号'] = x['_id']
        user_obj.append(x)
    return render(request, 'review/'+no+'/index_review.html', {'user_obj': user_obj, 'place_Review': "湖南省"})

# 查看脑出血问卷
@login_required
def review_view(request,aid,no):
    my = getMycol(no)
    mycol = my['mycol']
    if request.method == 'GET':
        for i in mycol.find({"_id": aid}):
            surveyData = i
    return render(request, 'review/'+no+'/index_view.html', {'surveyData': json.dumps(surveyData)})


#退回脑出血问卷
# 从正式问卷数据库中删除，在草稿箱中修改状态
#考虑出现一个弹出框
@login_required
def review_back(request,no):
    my = getMycol(no)
    mycol = my['mycol']
    mycol1 = my['mycol1']
    ret = {'status': True}
    try:
        nid = request.POST.getlist('nid[]')
        for aid in nid:
            print(aid)
            mycol.delete_one({"_id": aid})  # 确定是哪一份问卷，在正式数据库中删除
            mycol1.update({"_id": aid}, {'$set': {'是否需要再次编辑': "是"}}) #删除字段 
    except Exception as e:
        ret['status'] = False
    return HttpResponse(json.dumps(ret))




#通过脑出血问卷审核
def review_pass(request,no):
    my = getMycol(no)
    mycol = my['mycol']
    ret = {'status': True}
    try:
        nid = request.POST.getlist('nid[]')
        for aid in nid:
            mycol.update({"_id": aid},{'$set': {'审核是否通过': "是"}})
    except Exception as e:
        ret['status'] = False
    return HttpResponse(json.dumps(ret))



